import request from '@/utils/request'

// 文章 - 对文章点赞
export const likeArticleAPI = ({ artId }) => request({
  url: '/v1_0/article/likings',
  method: 'POST',
  data: {
    target: artId
  }
})
// 文章 - 取消对文章点赞
export const unLikeArticleAPI = ({ artId }) => request({
  url: `/v1_0/article/likings/${artId}`,
  method: 'DELETE'
})

// 用户 - 关注用户
export const userFollowAPI = ({ userId }) => request({
  url: '/v1_0/user/followings',
  method: 'POST',
  data: {
    target: userId
  }
})
// 用户 - 取消关注用户
export const userUnFollowAPI = ({ userId }) => request({
  url: `/v1_0/user/followings/${userId}`,
  method: 'DELETE'
})
// 评论 - 获取评论
export const commentsListAPI = ({ id, offset = null, limit = 10 }) => request({
  url: '/v1_0/comments',
  method: 'GET',
  params: { // axios只针对params传参，如果发现键值对，值为null，会忽略此参数名和值，不携带在 url? 后面
    type: 'a', // 评论类型，a-对文章(article)的评论，c-对评论(comment)的回复
    source: id,
    offset,
    limit
  }
})
// 评论 - 对评论或回复点赞
export const commentLikingAPI = ({ comId }) => request({
  url: '/v1_0/comment/likings',
  method: 'POST',
  data: {
    target: comId
  }
})
//  评论 - 取消对评论或回复点赞
export const commentDislikeAPI = ({ comId }) => request({
  url: `/v1_0/comment/likings/${comId}`,
  method: 'DELETE'
})
//  评论 - 对文章或评论进行评论
export const commentSendAPI = ({ id, content, art_id = null }) => {
  // 1.axios中，data请求体传参，如果值为null是不会忽略这个参数的
  // 也会把参数名和值携带给后台（只有params遇到null才会忽略）
  // 2.形参 art_id可选参数，如果逻辑页面是对文章评论，不需要携带art_id
  // 所以这时，内部art_id值默认为null就证明此次调用，是针对文章评论
  const obj = {
    target: id,
    content
  }
  // 如果art_id 有传进来实参，不是null， 则证明是对评论进行评论的，添加键值对
  if (art_id !== null) {
    obj.art_id = art_id
  }
  return request({
    url: '/v1_0/comments',
    method: 'POST',
    data: obj
  })
}
